/**
 *  by: yoyo
 *  @Date: 2024/10/30
 *  @Description: 这里采用选项API
 *  选项 API 的生命周期钩子是 Vue 自动调用的，所以在 mixin 中定义的 mounted 可以正常工作
 *  组合式 API 的生命周期钩子需要在 setup 中显式调用，mixins 中的组合式 API 生命周期钩子并不会自动被调用。
 *
 *  methods使用方式如下（每个页面可以直接使用）：
 *  const { proxy } = getCurrentInstance()
 *  proxy.toRoute('/system/user')
 */
const mixins = {
    mounted() {
        // console.log('Component mounted1222');
    },
    methods: {
        toRoute(router) {
            console.log(router)
            this.$router.push(router)
            // console.log('This is a global method');
        },
        /**
         * 获取运营商户列表并缓存
         * reLoad 是否重新获取，默认否，从缓存中取
         */
        getOrgSelectList(reLoad = false) {
            return new Promise(async (resolve, reject) => {
                let cacheData = this.$TOOL.data.get(this.$CONFIG.ORG_INFO_KEY)
                // console.log('缓存数据',cacheData)
                if (reLoad || !cacheData) {
                    this.$API.backend.operators.selectList.post().then(res => {
                        const { objData } = res
                        cacheData = objData
                        this.$TOOL.data.set(this.$CONFIG.ORG_INFO_KEY, objData)

                        resolve(cacheData)
                    }).catch(err => {
                        message.error(err.msg);
                    })
                }else{
                    resolve(cacheData)
                }
            })
        },
        getRoleSelectList() {
            return new Promise(async (resolve, reject) => {
                this.$API.backend.systemAccount.selectList.post().then(res => {
                    const { objData } = res
                    resolve(objData)
                }).catch(err => {
                    message.error(err.msg);
                    reject(err)
                })
            })
        },
        /**
         * 根据运营商ID获取资费列表
         * @param orgId
         * @returns {Promise<unknown>}
         */
        getTariffPolicySelectListByOrg(orgId) {
            return new Promise(async (resolve, reject) => {
                this.$API.backend.businessPostage.selectListByOrg.post({
                    orgId: orgId
                }).then(res => {
                    const { objData } = res
                    resolve(objData)
                }).catch(err => {
                    reject(err)
                })
            })
        },
        /**
         * 根据运营商ID返回运营商名称
         * @description 由于在模板中使用异步函数调用（如 getOrgNameByOrgId 返回 Promise）会导致渲染的问题，因为模板无法直接等待异步函数完成，所以这里直接从缓存中拿数据，在启动中或刷新时将会重新获取运营商
         * @param orgId
         * @returns string
         */
        getOrgNameByOrgId(orgId) {
            const defaultShowContent = '--'
            if(!orgId) {
                return defaultShowContent
            }
            let cacheData = this.$TOOL.data.get(this.$CONFIG.ORG_INFO_KEY)
            return cacheData.find(item => item.id === orgId)?.orgName || defaultShowContent
            // this.getOrgSelectList().then(dataArray => {
            //     // console.log(dataArray, orgId)
            //     return dataArray.find(item => item.id === orgId)?.orgName || defaultShowContent
            //     // return '12333'
            //     // dataArray.find(item => {
            //     //     if(item.id === orgId) {
            //     //         console.log(item.orgName)
            //     //         return item.orgName
            //     //     }else{
            //     //         // console.log('无')
            //     //     }
            //     // })
            // }).catch(err => {
            //     console.log('获取运营商列表失败', err)
            //     return defaultShowContent
            // })
        },
        getMinBySeconds(seconds) {
            // 接口返回是秒，处理为分
            const minutes = Math.floor(seconds / 60); // 获取完整的分钟数
            const remainingSeconds = seconds % 60;   // 获取剩余的秒数
            return `${minutes}:${remainingSeconds}`;
        }
    }
};

export default mixins;
